const app = getApp()
const api = require('../../../utils/api.js')
const util = require('../../../utils/util.js')

Page({
  data: {
    formData: {
      avatar: '',
      nickname: ''
    },
    tempAvatarPath: '', // 临时头像路径（未上传）
    avatarChanged: false // 标记头像是否改变
  },

  onLoad() {
    this.loadUserInfo()
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      const res = await api.get('/user/info')
      
      if (res.success && res.data) {
        this.setData({
          formData: {
            avatar: res.data.avatar || '',
            nickname: res.data.name || ''
          }
        })
      }
    } catch (error) {
      console.error('加载用户信息失败:', error)
      util.showError('加载失败')
    }
  },

  // 选择头像
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    console.log('✅ 选择头像:', avatarUrl)
    
    this.setData({
      'formData.avatar': avatarUrl,
      tempAvatarPath: avatarUrl,
      avatarChanged: true
    })
  },

  // 昵称输入
  onNicknameInput(e) {
    this.setData({
      'formData.nickname': e.detail.value
    })
  },

  // 保存资料
  async saveProfile() {
    try {
      const { formData, tempAvatarPath, avatarChanged } = this.data
      
      // 验证昵称
      if (!formData.nickname || !formData.nickname.trim()) {
        util.showError('请输入昵称')
        return
      }
      
      wx.showLoading({ title: '保存中...' })
      
      let avatar_url = formData.avatar
      
      // 如果头像改变了，先上传
      if (avatarChanged && tempAvatarPath && tempAvatarPath.startsWith('wxfile://')) {
        try {
          console.log('📤 上传新头像...')
          avatar_url = await api.uploadAvatar(tempAvatarPath)
          console.log('✅ 头像上传成功:', avatar_url)
        } catch (uploadError) {
          console.error('❌ 头像上传失败:', uploadError)
          wx.hideLoading()
          util.showError('头像上传失败')
          return
        }
      }
      
      // 更新用户信息
      await api.put('/user/info', {
        name: formData.nickname,
        avatar_url: avatar_url
      })
      
      wx.hideLoading()
      util.showSuccess('保存成功')
      
      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
      
    } catch (error) {
      wx.hideLoading()
      console.error('保存失败:', error)
      util.showError('保存失败：' + (error.message || '请重试'))
    }
  },

  // 取消编辑
  cancel() {
    wx.navigateBack()
  }
})

